﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace PanelLogowania
{
    public partial class Quiz : Form
    {
        int aktywnepytanie;
        int[] Odpowiedzi;
        string[] IdPytan;
        public Quiz(int IdKategoriii, int IloscPytann)
        {
            InitializeComponent();
            int MaxPytann = 0;
            IdKategorii = IdKategoriii;
            IloscPytan = IloscPytann;
            string MyConString = "SERVER=178.162.175.80;" +
            "PORT=3306;" +
            "DATABASE=quiz;" +
            "UID= bg;" +
            "PASSWORD=2Yftm4EvRME4YWFM;";
            MySqlConnection connection = new MySqlConnection(MyConString);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader Reader;
            try
            {
                if (IdKategorii == 0)
                {
                    command.CommandText = "";
                    textBoxKategoria.Text = "Brak kategorii";
                }
                else
                {
                    command.CommandText = "SELECT name from categories WHERE id=" + IdKategorii.ToString();
                    connection.Open();
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        string thisrow = "";
                        thisrow += Reader.GetValue(0).ToString();
                        textBoxKategoria.Text = thisrow;
                    }
                    connection.Close();
                }
                connection.Open();
                if (IdKategorii == 0)
                command.CommandText = "SELECT COUNT(*) FROM questions";
                else
                command.CommandText = "SELECT COUNT(*) FROM questions WHERE cat_id=" + IdKategorii.ToString();
                Reader = command.ExecuteReader();
                while (Reader.Read())
                {
                    string thisrow = "";
                    thisrow += Reader.GetValue(0).ToString();
                    MaxPytann = (int)Convert.ToDouble(thisrow);
                }
                connection.Close();
                connection.Open();
                if (IdKategorii == 0)
                    command.CommandText = "SELECT id FROM questions";
                else
                    command.CommandText = "SELECT id FROM questions WHERE cat_id=" + IdKategorii.ToString();
                Reader = command.ExecuteReader();
                int i = 0;
                if (MaxPytann < IloscPytan)
                    IloscPytan = MaxPytann;
                IdPytan = new string[IloscPytan];
                while (Reader.Read())
                {
                        string thisrow = "";
                        thisrow = Reader.GetValue(0).ToString();
                        if (i<IloscPytan)
                        IdPytan[i] = thisrow;
                        i++;
                }
                for (i = 0; i < IloscPytan; i++)
                {
                    Random Losuj = new Random();
                    int j = (int)Losuj.Next() % IloscPytan;
                    string temp = IdPytan[i];
                    IdPytan[i] = IdPytan[j];
                    IdPytan[j] = temp;
                }
                for (i = 0; i < IloscPytan; i++)
                {
                    Random Losuj = new Random();
                    int j = (int)Losuj.Next() % IloscPytan;
                    string temp = IdPytan[i];
                    IdPytan[i] = IdPytan[j];
                    IdPytan[j] = temp;
                }
                connection.Close();
                connection.Open();
                Odpowiedzi = new int[IloscPytan];
                command.CommandText = "SELECT content FROM questions WHERE id=" + IdPytan[0].ToString();
                Reader = command.ExecuteReader();
                while (Reader.Read())
                {
                    string thisrow = "";
                    thisrow += Reader.GetValue(0).ToString();
                    textBoxPytanie.Text = thisrow;
                }
                connection.Close();
                connection.Open();
                command.CommandText = "SELECT ans1, ans2, ans3, ans4 FROM questions WHERE id=" + IdPytan[0].ToString();
                Reader = command.ExecuteReader();
                i = 0;
                while (Reader.Read())
                {
                    for (i = 0; i < 4; i++)
                    {
                        string thisrow = "";
                        thisrow = Reader.GetValue(i).ToString();
                        switch (i)
                        {
                            case 0:
                                textBoxOdpA.Text = thisrow;
                                break;
                            case 1:
                                textBoxOdpB.Text = thisrow;
                                break;
                            case 2:
                                textBoxOdpC.Text = thisrow;
                                break;
                            case 3:
                                textBoxOdpD.Text = thisrow;
                                break;
                        }
                    }
                }

                connection.Close();
                for (i = 1; i <= IloscPytan; i++)
                    comboBoxWybor.Items.Add(i);
                comboBoxWybor.SelectedIndex = 0;
                aktywnepytanie = 1;
                textBoxNrP.Text = aktywnepytanie.ToString();
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
        
        }

        int IdKategorii, IloscPytan;

        private void Quiz_Load(object sender, EventArgs e)
        {
            
        }

        void ZapiszOdpowiedzi()
        {
            int odpowiedz = 0;
            if (radioButtonA.Checked) odpowiedz = 1;
            if (radioButtonB.Checked) odpowiedz = 2;
            if (radioButtonC.Checked) odpowiedz = 3;
            if (radioButtonD.Checked) odpowiedz = 4;
            Odpowiedzi[aktywnepytanie - 1] = odpowiedz;
        }

        void OdczytajOdpowiedzi()
        {
            switch (Odpowiedzi[aktywnepytanie - 1])
            {
                case 1:
                    radioButtonA.Checked = true;
                    break;
                case 2:
                    radioButtonB.Checked = true;
                    break;
                case 3:
                    radioButtonC.Checked = true;
                    break;
                case 4:
                    radioButtonD.Checked = true;
                    break;
                default:
                    radioButtonA.Checked = false;
                    radioButtonB.Checked = false;
                    radioButtonC.Checked = false;
                    radioButtonD.Checked = false;
                    break;
            }
        }

        void wybierzPytanie(int numer)
        {
            string MyConString = "SERVER=178.162.175.80;" +
            "PORT=3306;" +
            "DATABASE=quiz;" +
            "UID= bg;" +
            "PASSWORD=2Yftm4EvRME4YWFM;";
            MySqlConnection connection = new MySqlConnection(MyConString);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader Reader;
            connection.Open();
            command.CommandText = "SELECT content FROM questions WHERE id=" + IdPytan[numer].ToString();
            Reader = command.ExecuteReader();
            while (Reader.Read())
            {
                string thisrow = "";
                thisrow += Reader.GetValue(0).ToString();
                textBoxPytanie.Text = thisrow;
            }
            connection.Close();
            connection.Open();
            command.CommandText = "SELECT ans1, ans2, ans3, ans4 FROM questions WHERE id=" + IdPytan[numer].ToString();
            Reader = command.ExecuteReader();
            int i = 0;
            while (Reader.Read())
            {
                for (i = 0; i < 4; i++)
                {
                    string thisrow = "";
                    thisrow = Reader.GetValue(i).ToString();
                    switch (i)
                    {
                        case 0:
                            textBoxOdpA.Text = thisrow;
                            break;
                        case 1:
                            textBoxOdpB.Text = thisrow;
                            break;
                        case 2:
                            textBoxOdpC.Text = thisrow;
                            break;
                        case 3:
                            textBoxOdpD.Text = thisrow;
                            break;
                    }
                }
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            ZapiszOdpowiedzi();
            wybierzPytanie(comboBoxWybor.SelectedIndex);
            aktywnepytanie = comboBoxWybor.SelectedIndex+1;
            textBoxNrP.Text = aktywnepytanie.ToString();
            OdczytajOdpowiedzi();
        }

        private void Wstecz_Click(object sender, EventArgs e)
        {
            ZapiszOdpowiedzi();
            if (aktywnepytanie == 1)
                MessageBox.Show("Nie ma wcześniejszych pytań!");
            else
            {
                aktywnepytanie -= 1;
                wybierzPytanie(aktywnepytanie-1);
                comboBoxWybor.SelectedIndex = aktywnepytanie - 1;
            }
            textBoxNrP.Text = aktywnepytanie.ToString();
            OdczytajOdpowiedzi();
        }

        private void Dalej_Click(object sender, EventArgs e)
        {
            ZapiszOdpowiedzi();
            if (aktywnepytanie == IloscPytan)
                MessageBox.Show("Nie ma dalszych pytań!");
            else
            {
                aktywnepytanie += 1;
                wybierzPytanie(aktywnepytanie - 1);
                comboBoxWybor.SelectedIndex = aktywnepytanie - 1;
            }
            textBoxNrP.Text = aktywnepytanie.ToString();
            OdczytajOdpowiedzi();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ZapiszOdpowiedzi();
            string MyConString = "SERVER=178.162.175.80;" +
            "PORT=3306;" +
            "DATABASE=quiz;" +
            "UID= bg;" +
            "PASSWORD=2Yftm4EvRME4YWFM;";
            MySqlConnection connection = new MySqlConnection(MyConString);
            MySqlCommand command = connection.CreateCommand();
            MySqlDataReader Reader;
            int Punktacja=0;
            for (int i = 0; i < IloscPytan; i++)
            {
                command.CommandText = "SELECT corr FROM questions WHERE id=" + IdPytan[i].ToString();
                try
                {
                    connection.Open();
                    Reader = command.ExecuteReader();
                    while (Reader.Read())
                    {
                        string thisrow = "";
                        thisrow = Reader.GetValue(0).ToString();
                        if (Odpowiedzi[i] == (int)Convert.ToDouble(thisrow)) Punktacja += 1;
                    }
                    connection.Close();
                }
                catch (MySqlException Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
                
            }
            MessageBox.Show("Ilość zdobytych punktów: " + Punktacja.ToString());

        }
    }
}
